package ar.edu.utn.frgp.banco.business.Implements;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import ar.edu.utn.frgp.banco.business.Interfaces.IntCajaAhorroBusiness;
import ar.edu.utn.frgp.banco.dao.Implements.ImpClientes;
import ar.edu.utn.frgp.banco.dao.Implements.ImpCuenta;
import ar.edu.utn.frgp.banco.dao.Implements.ImpMovimientos;
import ar.edu.utn.frgp.banco.dao.Implements.ImpTransferencias;
import ar.edu.utn.frgp.banco.domain.Cliente;
import ar.edu.utn.frgp.banco.domain.Cuenta;
import ar.edu.utn.frgp.banco.domain.Movimiento;
import ar.edu.utn.frgp.banco.domain.Transferencia;
//prueba
public class ImpCajaAhorroBusiness implements IntCajaAhorroBusiness {

	@Override
	public boolean CrearCajaAhorro(Integer id_cliente) throws Exception {
		try {
			//verifico si el cliente existe
			Cliente cliente = null;
			ImpClientes clientedao = new ImpClientes();
			cliente = clientedao.ObtenerCliente(id_cliente);
			if (cliente != null)   {  // Existe el cliente
				//verifico la cantidad de Cuentas corrietes que posee
				List<Cuenta> cuentas = new ArrayList<Cuenta>();
				Integer cantCajaAhorros = 0;
				cuentas = cliente.getCuentas();
				
				for (Cuenta cuenta : cuentas){
					if(cuenta.getTipoCuenta().equals(Cuenta.TIPOCUENTA_CAJAAHORRO)){
						cantCajaAhorros = cantCajaAhorros + 1;
					}
				}
				
				if (cantCajaAhorros.equals(0)){ // No posee caja de ahorro Puede crear nuna
					//Genero el Alta de la cuenta
					Cuenta cuenta = new Cuenta();
					ImpCuenta cuentadao = new ImpCuenta();
					
					cuenta.setID_Cliente(cliente.getID_Cliente());
					cuenta.setEstado(Cuenta.ESTADOCUENTA_HABIILITADO);
					cuenta.setSaldo((double) 0);
					cuenta.setDescubierto((double)900);
					cuenta.setTipoCuenta(Cuenta.TIPOCUENTA_CAJAAHORRO);
					cuentadao.AltaCuenta(cuenta);
					return true;
				}else{ //Ya posee caja de ahorro
					throw new Exception("El cliente ya posee una Caja de Ahorro. No Puede Tener ortra."); //ENVIO DE ECEPCIONES
				}
			}else{ // El cliente no existe
				throw new Exception("El cliente es inexsistente."); //ENVIO DE ECEPCIONES
			}
		} catch (Exception e){
			throw new Exception(e.getMessage()); //ENVIO DE ECEPCIONES
		}
	}
}
